/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package familytree.negocio.bo;

import familytree.negocio.IImagenProcessor;
import familytree.persistencia.dao.DAOFactory;
import familytree.persistencia.dao.ImagenDAO;
import familytree.persistencia.pojos.Imagen;
import familytree.persistencia.pojos.Nodo;
import familytree.persistencia.pojos.Usuario;
import java.io.File;
import java.io.IOException;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.stream.FileImageOutputStream;

/**
 *
 * @author Antonio
 */
public class ImagenBO implements IImagenProcessor {

    private DAOFactory dAOFactory = DAOFactory.instance(DAOFactory.HIBERNATE);
    public static final long TAMANOMAXIMO = 134217728;
    
    public File blobToFile(Blob imagenBlob, String nombre,String extension, String ruta) {
        File f = null;
        try {
            String nombreCompleto = nombre + extension;
            f = new File(ruta,nombreCompleto);
             if (!f.exists()){
            
            
            FileImageOutputStream fos = new FileImageOutputStream(f);

            int tam = (int) imagenBlob.length();
            byte[] infor = imagenBlob.getBytes(1, tam);

            fos.write(infor, 0, tam);
            fos.close();

            }
        } catch (SQLException ex) {
            Logger.getLogger(ImagenBO.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(ImagenBO.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return f;
    }

    public String getExtension(String nombreArchivo) {
        int pos = nombreArchivo.lastIndexOf(".");
        return nombreArchivo.substring(pos);
    }

    public List<Imagen> getFotosRecientes(Nodo nodo,String ruta){
        ImagenDAO imagenDAO = dAOFactory.getImagenDAO();
        List<Imagen> lista = imagenDAO.getImagenesRecientes(nodo.getArbol().getIdArbol());
        for(Imagen imagen: lista){
            Blob blob = imagen.getImagenBlob();
            String extension = imagen.getExtension();
            imagen.setImagenFile(blobToFile(blob,imagen.getIdImagen(), extension, ruta));
        }
        return lista;
    }
    
    public Imagen getImagenById(String id){
        ImagenDAO imagenDAO = dAOFactory.getImagenDAO();
        Imagen imagen = imagenDAO.getImagenById(id);
        return imagen;
    }
    
    
    
}
